#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pygame
from pygame.locals import *

class clase:					# Menu principal, con accesos a configuracion, cargar y nueva partida.
	def __init__(self, main):
		
		self.select = False
		self.seleccion = 1
		self.fuente = main["graficos"]["fuente"]["20"]
		self.previo = {}
		self.previo["save"] = None
		
		self.fondo_orig = pygame.image.load('recursos/img/login/fondo.png').convert() # Carga el fondo
		self.fondo = pygame.transform.smoothscale(self.fondo_orig,(main["general"]["resolucion"][1]*16/9,main["general"]["resolucion"][1]))
		self.fondo_rec = self.fondo.get_rect(midtop=(main["general"]["resolucion"][0]/2,0))
		
		self.botoncontinuar1 = main["graficos"]["boton"]["normal"].copy()	# Boton para cargar la ultima partida
		self.botoncontinuar2 = main["graficos"]["boton"]["seleccionado"].copy()
		self.botoncontinuar3 = main["graficos"]["boton"]["presionado"].copy()
		self.botoncontinuar = self.botoncontinuar1
		self.botoncontinuar_rec = self.botoncontinuar1.get_rect(center=(main["general"]["resolucion"][0]/2,main["general"]["resolucion"][1] - 375))
		tamano = self.fuente.size("Continuar")
		pos = (self.botoncontinuar_rec.width/2-tamano[0]/2,self.botoncontinuar_rec.height/2-tamano[1]/2)
		self.botoncontinuar1.blit(self.fuente.render("Continuar", True, (255,255,255)),pos)
		self.botoncontinuar2.blit(self.fuente.render("Continuar", True, (255,255,255)),pos)
		self.botoncontinuar3.blit(self.fuente.render("Continuar", True, (255,255,255)),pos)
		
		self.botonnueva1 = main["graficos"]["boton"]["normal"].copy()		# Ir a nueva partida
		self.botonnueva2 = main["graficos"]["boton"]["seleccionado"].copy()
		self.botonnueva3 = main["graficos"]["boton"]["presionado"].copy()
		self.botonnueva = self.botonnueva1
		self.botonnueva_rec = self.botonnueva1.get_rect(center=(main["general"]["resolucion"][0]/2,main["general"]["resolucion"][1] - 300))
		tamano = self.fuente.size("Nueva")
		pos = (self.botonnueva_rec.width/2-tamano[0]/2,self.botonnueva_rec.height*5/16-tamano[1]/2)
		self.botonnueva1.blit(self.fuente.render("Nueva", True, (255,255,255)),pos)
		self.botonnueva2.blit(self.fuente.render("Nueva", True, (255,255,255)),pos)
		self.botonnueva3.blit(self.fuente.render("Nueva", True, (255,255,255)),pos)
		tamano = self.fuente.size("Partida")
		pos = (self.botonnueva_rec.width/2-tamano[0]/2,self.botonnueva_rec.height*11/16-tamano[1]/2)
		self.botonnueva1.blit(self.fuente.render("Partida", True, (255,255,255)),pos)
		self.botonnueva2.blit(self.fuente.render("Partida", True, (255,255,255)),pos)
		self.botonnueva3.blit(self.fuente.render("Partida", True, (255,255,255)),pos)
		
		self.botoncargar1 = main["graficos"]["boton"]["normal"].copy()	# Cargar partida
		self.botoncargar2 = main["graficos"]["boton"]["seleccionado"].copy()
		self.botoncargar3 = main["graficos"]["boton"]["presionado"].copy()
		self.botoncargar = self.botoncargar1
		self.botoncargar_rec = self.botoncargar1.get_rect(center=(main["general"]["resolucion"][0]/2,main["general"]["resolucion"][1] - 225))
		tamano = self.fuente.size("Cargar")
		pos = (self.botoncargar_rec.width/2-tamano[0]/2,self.botoncargar_rec.height*5/16-tamano[1]/2)
		self.botoncargar1.blit(self.fuente.render("Cargar", True, (255,255,255)),pos)
		self.botoncargar2.blit(self.fuente.render("Cargar", True, (255,255,255)),pos)
		self.botoncargar3.blit(self.fuente.render("Cargar", True, (255,255,255)),pos)
		tamano = self.fuente.size("Partida")
		pos = (self.botoncargar_rec.width/2-tamano[0]/2,self.botoncargar_rec.height*11/16-tamano[1]/2)
		self.botoncargar1.blit(self.fuente.render("Partida", True, (255,255,255)),pos)
		self.botoncargar2.blit(self.fuente.render("Partida", True, (255,255,255)),pos)
		self.botoncargar3.blit(self.fuente.render("Partida", True, (255,255,255)),pos)
		
		self.botonopcion1 = main["graficos"]["boton"]["normal"].copy()		# Opciones
		self.botonopcion2 = main["graficos"]["boton"]["seleccionado"].copy()
		self.botonopcion3 = main["graficos"]["boton"]["presionado"].copy()
		self.botonopcion = self.botonopcion1
		self.botonopcion_rec = self.botonopcion1.get_rect(center=(main["general"]["resolucion"][0]/2,main["general"]["resolucion"][1] - 150))
		tamano = self.fuente.size("Opciones")
		pos = (self.botonopcion_rec.width/2-tamano[0]/2,self.botonopcion_rec.height/2-tamano[1]/2)
		self.botonopcion1.blit(self.fuente.render("Opciones", True, (255,255,255)),pos)
		self.botonopcion2.blit(self.fuente.render("Opciones", True, (255,255,255)),pos)
		self.botonopcion3.blit(self.fuente.render("Opciones", True, (255,255,255)),pos)
		
		self.botonsalir1 = main["graficos"]["boton"]["normal"].copy()		# Salir del programa
		self.botonsalir2 = main["graficos"]["boton"]["seleccionado"].copy()
		self.botonsalir3 = main["graficos"]["boton"]["presionado"].copy()
		self.botonsalir = self.botonsalir1
		self.botonsalir_rec = self.botonsalir1.get_rect(bottomleft=(25,main["general"]["resolucion"][1]-25))
		tamano = self.fuente.size("Salir")
		pos = (self.botonsalir_rec.width/2-tamano[0]/2,self.botonsalir_rec.height/2-tamano[1]/2)
		self.botonsalir1.blit(self.fuente.render("Salir", True, (255,255,255)),pos)
		self.botonsalir2.blit(self.fuente.render("Salir", True, (255,255,255)),pos)
		self.botonsalir3.blit(self.fuente.render("Salir", True, (255,255,255)),pos)
		
		previo_sav = open("save/previo.sav", "r")	# Carga la ultima partida que se uso, si existe.
		lineas = previo_sav.readlines()
		previo_sav.close()
		for linea in lineas:
			linea = linea.split("=")
			if linea[1]:
				self.previo[linea[0]] = linea[1].replace("\n","")
		if self.previo["save"]:
			self.seleccion = 0
			save_sav = open("save/"+self.previo["save"], "r")
			lineas = save_sav.readlines()
			save_sav.close()
			for linea in lineas:
				linea = linea.split("=")
				if linea[1]:
					self.previo[linea[0]] = linea[1].replace("\n","")
		
	def seleccionar(self,main):
		pass
	
	def click(self,main):		# Controla si se hizo un click en algun boton
		if self.select:
			if main["general"]["evento"].type == pygame.MOUSEBUTTONDOWN:
				if main["general"]["evento"].button == 1:
					if self.botoncontinuar_rec.collidepoint(main["general"]["evento"].pos):
						main["jugador"]["nombre"] = self.previo["nombre"]
						main["jugador"]["lvl"] = self.previo["lvl"]
						main["jugador"]["exp"] = self.previo["exp"]
						main["mapa"]["enable"] = True
						main["ventana"]["borrar"].append("todo")
						main["ventana"]["crear"].append("ui_topright")	
						main["ventana"]["seleccionar"].append("ui_topright")
					if self.botonnueva_rec.collidepoint(main["general"]["evento"].pos):
						main["ventana"]["deseleccionar"].append("login")
						main["ventana"]["crear"].append("nueva")
						main["ventana"]["seleccionar"].append("nueva")
					if self.botoncargar_rec.collidepoint(main["general"]["evento"].pos):
						main["ventana"]["deseleccionar"].append("login")
						main["ventana"]["crear"].append("cargar")
						main["ventana"]["seleccionar"].append("cargar")
					if self.botonopcion_rec.collidepoint(main["general"]["evento"].pos):
						main["ventana"]["deseleccionar"].append("login")
						main["ventana"]["crear"].append("opciones")
						main["ventana"]["seleccionar"].append("opciones")
					if self.botonsalir_rec.collidepoint(main["general"]["evento"].pos):
						exit()
	
	def tecla(self,main):		# Controla si se apreto alguna tecla
		if self.select:
			if main["general"]["evento"].type == pygame.KEYDOWN:
				if main["general"]["evento"].key == pygame.K_UP:
					if not self.previo["save"] and self.seleccion == 1:
						self.seleccion = 4
					elif self.seleccion == 0:
						self.seleccion = 4
					else:
						self.seleccion -= 1
				elif main["general"]["evento"].key == pygame.K_DOWN:
					if not self.previo["save"] and self.seleccion == 4:
						self.seleccion = 1
					elif self.seleccion == 4:
						self.seleccion = 0
					else:
						self.seleccion += 1
				elif main["general"]["evento"].key == pygame.K_RETURN:
					if self.seleccion == 0:
						main["jugador"]["nombre"] = self.previo["nombre"]
						main["jugador"]["lvl"] = self.previo["lvl"]
						main["jugador"]["exp"] = self.previo["exp"]
						main["mapa"]["enable"] = True
						main["ventana"]["borrar"].append("todo")
						main["ventana"]["crear"].append("ui_topright")		
						main["ventana"]["seleccionar"].append("ui_topright")
					elif self.seleccion == 1:
						main["ventana"]["deseleccionar"].append("login")
						main["ventana"]["crear"].append("nueva")
						main["ventana"]["seleccionar"].append("nueva")
					elif self.seleccion == 2:
						main["ventana"]["deseleccionar"].append("login")
						main["ventana"]["crear"].append("cargar")
						main["ventana"]["seleccionar"].append("cargar")
					elif self.seleccion == 3:
						main["ventana"]["deseleccionar"].append("login")
						main["ventana"]["crear"].append("opciones")
						main["ventana"]["seleccionar"].append("opciones")
					elif self.seleccion == 4:
						exit()
				elif main["general"]["evento"].key == pygame.K_ESCAPE:
					exit()
	
	def proceso(self,main):
		self.botoncontinuar = self.botoncontinuar1		# Define que imagen se imprime en cada boton (normal - seleccionado)
		self.botonnueva = self.botonnueva1
		self.botoncargar = self.botoncargar1
		self.botonopcion = self.botonopcion1
		self.botonsalir = self.botonsalir1
		if self.seleccion == 0:
			self.botoncontinuar = self.botoncontinuar2
		elif self.seleccion == 1:
			self.botonnueva = self.botonnueva2
		elif self.seleccion == 2:
			self.botoncargar = self.botoncargar2
		elif self.seleccion == 3:
			self.botonopcion = self.botonopcion2
		elif self.seleccion == 4:
			self.botonsalir = self.botonsalir2
		pos = main["ventana"]["pulsar"]["click"]["posicion"]
		if self.botoncontinuar_rec.collidepoint(pos):
			self.botoncontinuar = self.botoncontinuar2
			if self.previo["save"]:
				self.seleccion = 0
				self.botoncontinuar = self.botoncontinuar2
		elif self.botonnueva_rec.collidepoint(pos):
			self.botonnueva = self.botonnueva2
			self.seleccion = 1
		elif self.botoncargar_rec.collidepoint(pos):
			self.botoncargar = self.botoncargar2
			self.seleccion = 2
		elif self.botonopcion_rec.collidepoint(pos):
			self.botonopcion = self.botonopcion2
			self.seleccion = 3
		elif self.botonsalir_rec.collidepoint(pos):
			self.botonsalir = self.botonsalir2
			self.seleccion = 4
	
	def graficar(self,main):
		main["general"]["pantalla"].blit(self.fondo,self.fondo_rec.topleft)	# Imprime todo
		if self.previo["save"]:
			main["general"]["pantalla"].blit(self.botoncontinuar,self.botoncontinuar_rec.topleft)
		main["general"]["pantalla"].blit(self.botonnueva,self.botonnueva_rec.topleft)
		main["general"]["pantalla"].blit(self.botoncargar,self.botoncargar_rec.topleft)
		main["general"]["pantalla"].blit(self.botonopcion,self.botonopcion_rec.topleft)
		main["general"]["pantalla"].blit(self.botonsalir,self.botonsalir_rec.topleft)
